//
// Created on 2024/7/25.
//
// Node APIs are not fully supported. To solve the compilation error of the interface cannot be found,
// please include "napi/native_api.h".

#ifndef VEGADEMO_MACRO_H
#define VEGADEMO_MACRO_H


#include <string>
#ifdef __OHOS__
#include <hilog/log.h>
#define TAG "raphael"
#define OH_LOG_DOMAIN 0x0000

static inline std::string& str_rep(std::string& str, std::string&& src, std::string&& dst);

template <class... vararg>
static inline void DT_OH_LOG(LogLevel level, std::string&& fmt, vararg... args) {
    str_rep(fmt, "%", "%{public}");
    OH_LOG_Print(LOG_APP, level, OH_LOG_DOMAIN, TAG, fmt.c_str(), args...);
}
static inline void DT_OH_LOG(LogLevel level, std::string&& fmt) {
    DT_OH_LOG<void*>(level, fmt.c_str(), 0);
}
static inline std::string& str_rep(std::string& str, std::string&& src, std::string&& dst) {
    size_t p = 0;
    while ((p = str.find(src, p)) != std::string::npos) {
        str.replace(p, src.size(), dst);
        p += src.size() + 1;
    }
    return str;
}

#ifdef DEBUG
#define LOGD(...) DT_OH_LOG(LOG_DEBUG, __VA_ARGS__) // 定义LOGD类型
#define LOGI(...) DT_OH_LOG(LOG_INFO, __VA_ARGS__)  // 定义LOGI类型
#define LOGW(...) DT_OH_LOG(LOG_WARN, __VA_ARGS__)  // 定义LOGW类型
#define LOGE(...) DT_OH_LOG(LOG_ERROR, __VA_ARGS__) // 定义LOGE类型
    
#else
#define LOGD(...)  // 定义LOGD类型
#define LOGI(...)  // 定义LOGI类型
#define LOGW(...)  // 定义LOGW类型
#define LOGE(...)  // 定义LOGE类型
#endif

#elif ANDROID
    
    
#endif


#endif //VEGADEMO_MACRO_H
